1. Field of the Invention
This invention relates generally to improving performance of highly reliable computer systems. In particular, read scheduling in a memory mirroring environment is provided.
2. Description of the Related Art
“Memory mirroring” is the practice of creating and maintaining an exact replica of original data on system memory. Memory mirroring has been used in highly reliable systems for years. It requires that a portion of the user's physical memory be allocated as mirrored memory, thus resulting in reduced system memory capacity. In effect, memory mirroring would reduce memory capacity by half. Although memory mirroring offers increased system reliability, the reduction in system memory capacity may generally result in reduced performance. Current techniques for addressing the performance tradeoff are few and inadequate.
One technique for improving performance on mirrored memory systems has been to split memory access requests between a primary memory port and a mirrored (secondary) memory port. In a mirrored memory system, write requests are executed by both a primary memory port and a secondary memory port. In contrast, read requests need only be executed by either the primary port or the secondary port. When all read requests are dispatched to the primary port, the read bandwidth of the secondary memory port goes unused. In an effort to reclaim the wasted bandwidth, prior mirrored memory computer system have used a “toggle” mode, alternating between the primary and secondary port, to direct each read request to the opposite port to which the previous read request was directed. Although the “toggle” method is a definite improvement over directing all reads to the primary port, there are still significant drawbacks.
Therefore, there is a need for a mirrored memory system that schedules read commands such that both overall memory latency is reduced and read bandwidth on the mirrored memory port is utilized.